package regex;
/**
 * 判断一个字符串是否是手机字符串
 * "13534931781"
 * 手机号的规则:
 *   1.手机号的长度必须是11位
 *   2.手机号的第一位必须是1
 *   3.手机号的第二位:3或4或5或7或8
 *   4.手机号的后9位数都必须是数字
 *
 *  条件运算:
 *   !(A || B || C) 等价于 !A && !B && !C
 *   !(A && B && C) 等价于 !A || !B || !C
 */
public class RegexDemo01 {
    public static void main(String[] args) {
        System.out.println(checkPhoneNum("13534931781"));//true
        System.out.println(checkPhoneNum("1353493178"));//位数不满足
        System.out.println(checkPhoneNum("23534931786"));//首位不满足
        System.out.println(checkPhoneNum("10534931786"));//第二位不满足
        System.out.println(checkPhoneNum("13534931a86"));//后9位不全是数字
    }

    public static boolean checkPhoneNum(String phoneNumber){
        //1.手机号的长度必须是11位
        if (phoneNumber.length() != 11) {
            return false;
        } else if (phoneNumber.charAt(0)!='1') {
            //2.手机号的第一位必须是1
            return false;
        } else if (!(phoneNumber.charAt(1)=='3'||phoneNumber.charAt(1)==4||phoneNumber.charAt(1)=='5'
                ||phoneNumber.charAt(1)=='7'||phoneNumber.charAt(1)=='8')) {
            //3.手机号的第二位:3或4或5或7或8
            return false;
        } else {//4.手机号的后9位数都必须是数字
            char[] chars = phoneNumber.toCharArray();
            for (int i = 2; i < phoneNumber.length(); i++) {
                if (!(chars[i]>='0'&&chars[i]<='9')) {
                    return false;
                }
            }
        }
        return true;//能走到这一步return true,说明上边的return false一个都没执行,说明上面的规则都满足
    }
}
